﻿namespace ConsoleSnake.Sounds.Melodies
{
    internal sealed class SuperMarioMelody : ArduinoСompatibleMelody
    {
        protected override int[] Tones { get; } 
            = new int[] { 
                1318, 1318, 1318, 1046, 1318, 1568, 784,
                1046, 784, 659, 880, 987, 932, 880, 784,
                1318, 1568, 1750, 1396, 1568, 1318, 1046, 1174, 987,
                1046, 784, 659, 880, 987, 932, 880,
                784, 1318, 1568, 1750, 1396, 1568, 1318, 1046, 1174, 987,
                1568, 1480, 1396, 1244, 1318, 830, 880, 1046, 880, 1046, 1174,
                0, 1568, 1480, 1396, 1244, 1318, 2093, 2093, 2093,
                1568, 1480, 1396, 1244, 1318, 830, 880, 1046, 880, 1046, 1174, 1244, 1174, 1046
            };

        protected override int[] Durations { get; }
            = new int[]
            {
                150, 300, 150, 150, 300, 600, 600,
                450, 150, 300, 300, 150, 150, 300, 210,
                210, 150, 300, 150, 150, 300, 150, 150, 450,
                450, 150, 300, 300, 150, 150, 300,
                210, 210, 150, 300, 150, 150, 300, 150, 150, 450,
                150, 150, 150, 300, 150, 150, 150, 150, 150, 150, 150,
                0, 150, 150, 150, 300, 150, 300, 150, 600,
                150, 150, 150, 300, 150, 150, 150, 150, 150, 150, 150, 300, 450, 600
            };

        protected override int[] Delays { get; }
            = new int[]
            {
                150, 300, 300, 150, 300, 600, 600,
                450, 450, 450, 300, 300, 150, 300, 210,
                210, 150, 300, 150, 300, 300, 150, 150, 450,
                450, 450, 450, 300, 300, 150, 300,
                210, 210, 150, 300, 150, 300, 300, 150, 150, 600,
                150, 150, 150, 300, 300, 150, 150, 300, 150, 150, 150,
                300, 150, 150, 150, 300, 300, 300, 150, 600,
                150, 150, 150, 300, 300, 150, 150, 300, 150, 150, 450, 450, 450, 1200
            };
    }
}
